অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) এবং Spring Boot এর মাধ্যমে মেসেজ প্রেরণ (Sender) এবং গ্রহণ (Listener) একটি জনপ্রিয় প্যাটার্ন যা অ্যাসিঙ্ক্রোনাস মেসেজিং সিস্টেম তৈরি করতে ব্যবহৃত হয়। Spring Boot এবং অ্যাপাচি অ্যাকটিভএমকিউ-এর সমন্বয়ে আপনি সহজেই প্রোডিউসার (Sender) এবং কনজিউমার (Listener) তৈরি করতে পারেন।
এখানে আমরা দেখব কিভাবে Spring Boot এর সাহায্যে Message Sender এবং Message Listener তৈরি করা যায় অ্যাপাচি অ্যাকটিভএমকিউ ব্যবহার করে।
প্রয়োজনীয় ডিপেনডেন্সি
প্রথমে, pom.xml ফাইলে অ্যাপাচি অ্যাকটিভএমকিউ এবং স্প্রিং অ্যামকিউ (Spring ActiveMQ) ডিপেনডেন্সি যুক্ত করতে হবে:
<dependencies>
<!-- Spring Boot Starter Web for creating REST API -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for working with message brokers like ActiveMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for messaging -->
<dependency>
<groupId>org.springframework.jms</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<!-- Apache ActiveMQ dependency -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
এই ডিপেনডেন্সিগুলি আপনার প্রজেক্টে অ্যাপাচি অ্যাকটিভএমকিউ এবং স্প্রিং বুটের মধ্যে ইন্টিগ্রেশন সরবরাহ করবে।
Spring Boot এর মাধ্যমে Message Sender (Producer) তৈরি করা
এখন আমরা একটি Message Sender তৈরি করব যা অ্যাপাচি অ্যাকটিভএমকিউ ব্রোকারে মেসেজ পাঠাবে।
ActiveMQ Configuration:
অ্যাপাচি অ্যাকটিভএমকিউ কনফিগারেশন Spring Boot অ্যাপ্লিকেশনে করার জন্য,
application.propertiesফাইলে কনফিগারেশন যুক্ত করতে হবে।spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.in-memory=false spring.activemq.packages.trust-all=trueএখানে:
- broker-url: অ্যাকটিভএমকিউ ব্রোকারের URL (ডিফল্ট পোর্ট: 61616)।
- user/password: অ্যাকটিভএমকিউ ব্রোকারের ইউজারনেম এবং পাসওয়ার্ড।
- in-memory=false: ডিস্কে মেসেজ স্টোরেজ সক্রিয় করা।
Message Sender (Producer) কনফিগারেশন:
মেসেজ প্রেরণের জন্য আমরা একটি
JmsTemplateব্যবহার করব।package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Service; @Service public class MessageSender { @Autowired private JmsTemplate jmsTemplate; private String destination = "testQueue"; // Queue Name // Method to send message to ActiveMQ public void sendMessage(String message) { jmsTemplate.convertAndSend(destination, message); System.out.println("Sent message: " + message); } }এখানে:
- JmsTemplate: Spring Boot এর মাধ্যমে অ্যাকটিভএমকিউে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
- destination: মেসেজ প্রেরণের জন্য কিউয়ের নাম।
REST Controller for Sending Messages:
মেসেজ পাঠানোর জন্য একটি REST API তৈরি করতে পারেন:
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class MessageController { @Autowired private MessageSender messageSender; // Endpoint to send message @GetMapping("/send") public String sendMessage(@RequestParam String message) { messageSender.sendMessage(message); return "Message sent: " + message; } }এই কোডের মাধ্যমে, আপনি
http://localhost:8080/send?message=HelloActiveMQURL এ GET রিকোয়েস্ট পাঠিয়ে মেসেজ পাঠাতে পারবেন।
Spring Boot এর মাধ্যমে Message Listener (Consumer) তৈরি করা
এখন আমরা একটি Message Listener তৈরি করব যা কিউ থেকে মেসেজ গ্রহণ করবে।
Message Listener কনফিগারেশন:
Spring Boot এর মাধ্যমে @JmsListener ব্যবহার করে আপনি মেসেজ গ্রহণ করতে পারেন। প্রথমে, @EnableJms অ্যানোটেশনটি ব্যবহার করে JmsListener সক্রিয় করতে হবে।
package com.example.demo; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Service; @Service public class MessageListener { // Listening to the 'testQueue' for incoming messages @JmsListener(destination = "testQueue") public void receiveMessage(String message) { System.out.println("Received message: " + message); } }এখানে:
- @JmsListener(destination = "testQueue"): এটি
testQueueথেকে মেসেজ গ্রহণ করার জন্য কনজিউমার তৈরি করে। যখনই কিউতে একটি মেসেজ আসে, এই মেথডটি তা গ্রহণ করবে।
- @JmsListener(destination = "testQueue"): এটি
JmsListenerContainerFactory কনফিগারেশন:
স্প্রিং বুটের মাধ্যমে JMS কনজিউমার এবং কনফিগারেশন পরিচালনা করার জন্য JmsListenerContainerFactory কনফিগার করা হয়:
package com.example.demo; import org.apache.activemq.ActiveMQConnectionFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.annotation.EnableJms; import org.springframework.jms.connection.JmsConnectionFactoryFactory; import org.springframework.jms.listener.DefaultMessageListenerContainer; import org.springframework.jms.listener.MessageListenerContainer; import org.springframework.jms.listener.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.listener.config.JmsListenerContainerFactory; import org.springframework.jms.support.destination.DestinationResolver; import org.springframework.jms.support.converter.MessageConverter; @Configuration @EnableJms public class JmsConfig { @Bean public JmsListenerContainerFactory<?> myFactory( ActiveMQConnectionFactory connectionFactory, MessageConverter messageConverter, DestinationResolver destinationResolver) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setMessageConverter(messageConverter); factory.setDestinationResolver(destinationResolver); return factory; } }
সারাংশ
অ্যাপাচি অ্যাকটিভএমকিউ এবং Spring Boot ব্যবহার করে Message Sender (Producer) এবং Message Listener (Consumer) তৈরি করা একটি সাধারণ এবং কার্যকরী উপায় মেসেজিং সিস্টেম তৈরির জন্য। Spring Boot এর মাধ্যমে:
- Message Sender:
JmsTemplateব্যবহার করে মেসেজ পাঠানো হয়। - Message Listener:
@JmsListenerব্যবহার করে মেসেজ গ্রহণ করা হয়।
এইভাবে, আপনি স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করে অ্যাপাচি অ্যাকটিভএমকিউ মেসেজ ব্রোকারের মাধ্যমে মেসেজ প্রেরণ এবং গ্রহণ সহজেই পরিচালনা করতে পারেন।